/*
 * Copyright 2020 eBlocker Open Source UG (haftungsbeschraenkt)
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be
 * approved by the European Commission - subsequent versions of the EUPL
 * (the "License"); You may not use this work except in compliance with
 * the License. You may obtain a copy of the License at:
 *
 *   https://joinup.ec.europa.eu/page/eupl-text-11-12
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
export default function DialogService($mdDialog, $q) {
    'ngInject';

    function confirmationDialog(event, msgKeyTitle, msgKeyText, msgKeyOkButton, msgKeyCancelButton,
                                subject, okCallback, cancelCallback) {
        return $mdDialog.show({
            controller: 'ConfirmationDialogController',
            controllerAs: 'vm',
            templateUrl: 'dialogs/confirmation/confirmation.dialog.tmpl.html',
            parent: angular.element(document.body),
            clickOutsideToClose:false,
            targetEvent: event,
            locals: {
                msgKeys: {
                    title: msgKeyTitle,
                    text: msgKeyText,
                    okButton: msgKeyOkButton,
                    cancelButton: msgKeyCancelButton
                },
                subject: subject,
                okAction: okCallback,
                cancelAction: cancelCallback || function() {}
            }
        }).then(function success(response) {
            return response;
        }, function error(response) {
            return response;
        });
    }

    function confirmDoNotShowReminderAgain(event, okCallback, cancelCallback) {
        return confirmationDialog(event,
            'REMINDER.DONOTSHOWAGAIN.WARNING_TITLE',
            'REMINDER.DONOTSHOWAGAIN.WARNING',
            'REMINDER.DONOTSHOWAGAIN.OK',
            'REMINDER.DONOTSHOWAGAIN.CANCEL',
            {},
            okCallback,
            cancelCallback
        );
    }

    return {
        confirmDoNotShowReminderAgain: confirmDoNotShowReminderAgain
    };
}
